package shuaige.jdk.stream.流基础;

import shuaige.jdk.函数式接口.把一个T类型转换成R类型map用_Function.Function具体实现;

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

/**
 * 中间流操作指的是各种中间流操作方法，比如去重、过滤、排序等
 */
public class 中间流转换_flatMap {

    /**
     * 重新转换为 指定 流
     * 当流中元素包含子元素的时候，通过该方法，获取到元素的子元素，并将子元素组成新流返回。
     */
    public static void flatMap() {
        List<String> list = Arrays.asList("1,1,1", "2,2,2", "3,3,3", "4,4,4", "5,5,5", "6,6,6", "7,7,7", "8,8,8", "9,9,9");
        list.stream()
                .peek(s -> {
                    System.out.println("处理前：" + s);
                })
                .map(s -> {
                    // 将每个字符串元素分解为字符数组
                    return s.split(",");
                })
                //将每个字符数组并转化为流
                .flatMap(Function具体实现.将strings转换为Stream_String_)
                .peek(s -> {
                    System.out.println("处理后：" + s);
                })
                .collect(Collectors.toList());
    }

    public static void main(String[] args) {
        flatMap();
    }

}
